"""
Pandas 中 Series 和 DataFrame 的两种数据类型中都有 nunique() 和 unique() 方法。
这两个方法作用很简单，都是求 Series 或 Pandas 中的不同值。

其中 unique() 方法返回的是去重之后的不同值，而 nunique() 方法则直接放回不同值的个数。

特别说明：
    当 Series和 DataFrame 中包含 np.NAN, np.NaN, pd.NaT, None 等特殊值时，
    uniuqe() 和 nunique() 返回的不同值个数不一致，
    可以通过增加 nunique() 的参数自定义统计是否包含特殊值的情况。
"""

import pandas as pd
import numpy as np

s1 = pd.Series([5, 7, 6, 3, 4, 1, 2, 3, 5, 4, 1, 1])
print('s1中不同值:', s1.unique())
print('s1中不同值的个数:', len(s1.unique()))
print('s1中不同值的个数:', s1.nunique())

# 当存在Nan、None时
print('=' * 30)
s2 = pd.Series([5, 7, 6, 3, np.NAN, np.NaN, 4, 1, 2, 3, 5, 4, 1, 1, pd.NaT, None])
print('s2中不同值:', s2.unique())
print('s2中不同值的个数:', len(s2.unique()))
print('s2中不同值的个数:', s2.nunique())
print('s2中不同值的个数(包含空值):', s2.nunique(dropna=False))
